import 'package:tobias/tobias.dart';

class AlipayService {
  static Tobias tobias = Tobias();

  // 检查支付宝是否已安装
  static Future<bool> isAliPayHaveInstalled() async {
    // 确保调用的方法正确
    Tobias tobias = Tobias();
    var result = await tobias.isAliPayInstalled;
    return result;
  }

// 调起支付宝支付
  static Future<Map<String, dynamic>> startAlipay(String orderInfo) async {
    try {
      // 调用支付宝支付接口并将结果转换为 Map<String, dynamic>
      Map result = await tobias.pay(orderInfo);

      // 显式将 Map<dynamic, dynamic> 转换为 Map<String, dynamic>
      Map<String, dynamic> typedResult = Map<String, dynamic>.from(result);

      // 返回处理后的支付结果
      return typedResult;
    } catch (e) {
      // 支付过程中的异常处理
      return {'resultStatus': 'error', 'memo': '支付异常'};
    }
  }

  // 根据支付结果处理不同状态
// 根据支付结果处理不同状态
  static Map<String, String> handlePaymentResult(Map<String, dynamic> result) {
    String resultStatus = result['resultStatus'] ?? 'error';
    String resultMessage;

    switch (resultStatus) {
      case '9000':
        resultMessage = '支付成功';
        break;
      case '8000':
        resultMessage = '支付结果确认中';
        break;
      case '4000':
        resultMessage = '支付失败';
        break;
      case '6001':
        resultMessage = '用户中途取消';
        break;
      case '6002':
        resultMessage = '网络连接出错';
        break;
      default:
        resultMessage = '未知错误';
    }

    return {
      'resultStatus': resultStatus,
      'resultMessage': resultMessage,
    };
  }
}
